package com.bolo.examples.base.controller;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.bolo.examples.base.entity.User;
import com.bolo.examples.base.service.UserService;

/**
 * 人员管理
 * 
 * @author 菠萝大象
 */
// @Controller:在类上面定义，表明该类为控制器，返回字符串与redirect:xxx
// @RequestMapping:在类或方法上面使用此注解，设置URL访问地址。它有两个属性，value指定访问路径，method指定指定请求方式，
// 请求方式在RequestMethod这个类中，全部以常量形式定义，它默认使用GET请求。
@Controller
@RequestMapping("/user")
public class UserController {

	@Autowired
	private UserService userService;

	@RequestMapping(method = { RequestMethod.GET, RequestMethod.POST })
	public String list(Model model, User user) {
		model.addAttribute("list", userService.queryResult(user));
		model.addAttribute("entity", user);
		return "base/user_list";
	}

	@ResponseBody
	@RequestMapping(value = "/validateName", method = RequestMethod.POST)
	// @RequestParam:指定Request请求参数，在方法参数中定义，相当于传统的request.getParameter()。
	public String validateName(@RequestParam String name) {

		return null;
	}

	@InitBinder
	// @InitBinder:初始化数据绑定与类型转换，将传入的参数转换为自定义类型，或者对参数进行自定义处理
	public void initBinder(WebDataBinder binder) {
		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		dateFormat.setLenient(false);
		binder.registerCustomEditor(Date.class, new CustomDateEditor(
				dateFormat, true));
	}

}